<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /**
     *      一、字符组
     *          [] 表示范围
     *          /d 表示数字[0-9]
     *          /D 表示非数字[^0-9]
     *          /w 表示数字字母下划线(单词字符) [0-9a-zA-Z_]
     *          /W 表示非单词字符 [^0-9a-zA-Z_]
     *          /s 表述空白符 [\t\v\n\r\f]
     *          /S 表述非空白符 [^\t\v\n\r\f]
     *          . 表示通配符 [^\n\r\u2028\u2029]
     *          
     *          任意字符可以表示为 [/d/D] [/s/S] [/w/W] [^]
     * 
     *      二、量词
     *          {} 表示重复
     *          {m,} 至少出现m次
     *          {m} 出现m次
     *          ? 等价与 {0,1}
     *          + 等价于 {1,}
     *          * 等价于 {0,}
     *          惰性匹配在后面再加一个‘?’ (问号)
     * 
     *      三、位置匹配
     *          ^ 匹配开头
     *          $ 匹配结尾
     *          \b 匹配单词边界
     *          \B 匹配非单词边界
     *          (?=p) 匹配p前面的位置
     *          (?!p) 匹配非p前面的位置
     *  
     *          (?!^) 非开头位置
     *          (?!$) 非结尾位置
     * */


    // 正则表达式千分符
    var num = 1234567.89123;
    var [left, right] = num.toString().split('.');
    left = left.replace(/(?!^)(?=(\d{3})+$)/g, ',');
    right = right.split('').reverse().join('').replace(/(?!^)(?=(\d{3})+$)/g, ',').split('').reverse().join('')
    console.log(left + '.' + right);


    function fun(str) {
        var r, g, b;
        // r = str.slice(1, 3);
        // g = str.slice(3, 5);
        // b = str.slice(5, 7);
        let temp = str.match(/\w{2}/g)
        r = temp[0]
        g = temp[1]
        b = temp[2]
        r = parseInt(r, 16);
        g = parseInt(g, 16);
        b = parseInt(b, 16);
        console.log(r, g, b)
        console.log('rgb(' + r + ', ' + g + ', ' + b + ')')
    }
    fun('#4D81B6')

    // 模板字符串
    var name = 'luojianming';
    var age = 18;
    var obj = {
        name: 'luo',
        age: 20
    }

    function template(str, obj) {
        console.log(str);
        var res = str.replace(/\$\{(\w+)\}/g, function (match, prop, index, str) {
            // return eval(prop)
            return obj[prop]
        })
        console.log(res);
    }
    var str = 'My name is ${name}, ${age} years old'
    template(str, obj)
</script>

</html>